# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：4.2 切片.py
# 开发时间：2021/3/18 20:51

# 切片是指，从列表中获取子列表
# 创建一个列表，一般创建列表时，变量的名字会使用复数
status = ['孙悟空', '猪八戒', '沙和尚', '唐僧', '白骨精', '蜘蛛精', '六耳猕猴', '玉皇大帝']
print(status)

# 列表的索引可以是负数
# 如果是负数，则从后向前获取元素，-1倒数第一个
print("倒数第一个元素：", status[-1])

# 通过切片的方式，也可以获取指定的元素
# 语法：列表名[起始索引:结束索引]
print(status[2:4])
print("可见，切片包含起始位置的元素，而不包括结束位置的元素")
# 做切片操作时，会返回一个新的列表(相当于数据库表中的临时表，不会影响原表)
# 起始索引和结束索引都可以省略不写
print(status[:])    # 不指定索引，全部取出
print(status[2:])   # 仅指定起始索引，从第n+1起始，取出
print(status[:4])   # 仅指定结束索引，从0索引取出，直到n+1个(第n+1个不取出)

# 语法：列表名[起始索引:结束索引:步长]
# 步长表示，每次获取元素的间隔，默认值是1(相当于是元素间的逗号)
print("\n三个参数把列表切片：")
print(status)
print(status[0:5:1])  # 跳1个逗号，本来就有1个逗号所以不跳
print(status[0:5:2])  # 跳2个逗号，相当于跳1个元素
print(status[0:5:3])  # 跳3个逗号，相当于跳2个元素

# slice == 切片，步长不能是零，但可以是负数，负数是指从反向取数，倒着取
print("\n三个参数把列表切片：")
print(status)
# 步长不能是零
# print(status[0:5:0])  # ValueError: slice step cannot be zero
# 如果步长是负数，则会从列表后部向前边取元素
print(status[-1:-3:-1])







